Acid Jazz is an Apple Event based phone dialer for use with such applications as FileMaker Pro, HyperCard and QuicKeys. It is a simple application that can be controlled via the AppleEvent sending capabilities of these applications. It can be used with any application that has the ability to send custom events or the standard “Do Script” event.
Acid Jazz can also be used with Apple Script. It is both scriptable and recordable. It does not take full use of the AppleEvent Object Model, however, since very few applications can send object model commands at this time. Acid Jazz works by sending a custom, text based event or the “Do Script” event via its own scripting language.
• Networking conflict on Power Manager equipped computers - Fixed a problem where Acid Jazz (versions 1.1v1 and 1.2v1) could cause the computer to lose network connections and/or crash after dialing on computers equipped with the Power Manager. This applies to all portable Macs including the Portable, PowerBook and Duo models. It is highly recommended that you upgrade to this version if your machine is connected or periodically connected to a network.
• Long Distance Prefix - Version 1.1v1 had a problem in that, if the phone number contained less than 10 digits, the long distance Prefix would be added even though it was not a long distance number. This version corrects this oversight. Acid Jazz does not check for area codes unless the number contains at least 10 digits.
• Long Distance Postfix - This version adds a new field in the Preferences dialog box (Long dist. postfix). The contents of this field will automatically be added to the end of all long distance numbers. There is also a new script command (post) that allows you to control this feature via the Do Script Apple Event. This feature was added due to a request by some users who need to append a code onto long distance numbers for tracking purposes.
• Powerbook Power Manager - Previous versions of Acid Jazz exhibited a problem with some internal modems installed in Macintosh Powerbook models. This problem manifested itself as a timeout when trying to dial through the modem on these machines. This problem has been corrected in this version.
• Long Distance Prefix - Since I don't need to dial a "1" prior to long distance numbers in my area, I did not write any provision into the initial versions of Acid Jazz to handle this situation. This version adds a new field in the Preferences dialog box (Long Distance Prefix). The contents of this field will automatically be added to the beginning of all numbers dialed when the area code does not match what's entered into the local area code field. There is also a new script command (local) that allows you to control this feature via the Do Script Apple Event.
• Preferences Crash - Use of a non-standard menu Proc. would cause Acid Jazz 1.0v1 to crash when accessing the Preferences dialog box on some older model Macs. This problem has been corrected in this version. If you have experienced such a problem when using version 1.0v1, it is recommended that you throw away the “Acid Jazz Prefs” file in the Preferences folder inside your System Folder prior to using this new version (it will be recreated when the application is launched). It is very likely that this file is corrupted as a result of the crash.
• Port Initialization Bug - The serial port was not initialized properly the first time dialing after launch. Subsequent dialings would initialize the port properly. If you had to launch Acid Jazz and open the Preferences dialog box before it would dial for you, this should correct the problem.
• Memory Leak - There was a problem with heap space leaking away if the application was used repeatedly in the same session. This has been corrected. It is unlikely that many of you would have encountered this problem since the program is most often used to dial just once per launch (the DIAL event quits after dialing).
• Leading Quote Bug - If the string sent to Acid Jazz contained a Quote character in the first position, Acid Jazz 1.0v1 would not perform its normal alpha-to-number substitution. If you were trying to dial a string such as “800 POPCORN” therefore, the number actually dialed would be 800PPR (P and R are special modem characters that are never stripped from a string). This has been corrected in 1.0v2. If the your local area code is placed within the quotes, however, it will not be removed.
• ARA Incompatibility - Acid Jazz would not successfully dial through the modem when ARA (AppleTalk Remote Access) was in auto answer mode. When in this mode, ARA will start reinitializing the modem as soon as the port is closed. To correct the problem, Acid Jazz now waits for a response from the modem before closing the port. The new Q0 and V1 commands in the initialization string are necessary to ensure that the modem sends the correct type of response. If you had Acid Jazz 1.0v1 installed on your machine, therefore, I recommend that you click the Default button in the Preferences dialog to update your preferences file with this new string.
• Line Stability in the Preferences Dialog - When deleting characters in the “Local area code” field in the Preferences dialog, the baseline of the text would sometimes shift causing some peculiar overwriting of characters. This cosmetic problem has been corrected in this version.
• Improved Feedback - Since I have to wait for the modem to respond before closing the port, I thought I’d take the opportunity to provide better feedback as to what the modem is doing. You will notice improved feedback in the status dialog box when dialing through a modem. The standard completion message “DONE” is actually a substitution of the normal “NO CARRIER” message the modem gives after dialing. Since modems are designed to communicate with other modems, the “NO CARRIER” message is the normal message received by Acid Jazz after dialing. The “DONE” message was substituted to avoid confusion. If your modem supports it, you may want to include an X3 or X4 command in your dial string. This will provide even better feedback like telling you when the line is busy or there is no dial tone.
• Cancel Dialing - You can now cancel your dialing request using the standard Command-Period key sequence.
• Improved splash screen/about box on black and white machines - The color PICT used for the Splash Screen and About box in 1.0v1 did not dither very well on black and white machines. Acid Jazz 1.0v2 now substitutes a more legible PICT when in black and white mode.
There are numerous other changes in the internal workings of the application but I won’t bore you with the details. Suffice it to say that 1.0v2 should be a great deal more robust than 1.0v1.
Very special thanks to Rick Johnson and Jerry Marks for discovering some of these problems and acting as my ad hoc SQA team.
You may evaluate the program for a period not exceeding 15 days. If you wish to continue using the program, please send $15(US) to the following address:
Use the "Acid Jazz" application at your own risk. The author (Kevin J. Jundt) makes no warranties, either express or implied, regarding the fitness of the "Acid Jazz" application for any particular purpose. The author claims no liability for data loss or any other problems caused directly or indirectly by use of the "Acid Jazz" application.
Acid Jazz requires System 7.0 or greater. Older versions of the operating system do not support AppleEvents.
In order to use AppleScript to control Acid Jazz, you must have AppleScript installed on your machine. The included AppleScript example file is an AppleScript Script Editor document and will not open unless you have this application installed.
In order to control Acid Jazz from FileMaker Pro, you must have version 2.0 or greater (2.1 is recommended).
In order to control Acid Jazz from HyperCard, you must have version 2.1 or greater.
In order to control Acid Jazz from QuicKeys, you must have version 2.1 or greater. You must also have the Apple Events Extension installed.
In order to dial the phone using a modem, you must have a Hayes compatible modem properly connected to your computer.
Since Acid Jazz is an application, it's important that applications sending it events are able to find it. Rebuilding the desktop will ensure that the directory on the disk is updated with all the necessary information. After decompressing Acid Jazz, therefore, it is essential that you rebuild your desktop file.
Hold down the Command & Option keys together as you start or restart your machine. Keep them held down during the boot process until you get a dialog box asking you if you want to rebuild the desktop on your drive. Click the OK button to begin the rebuild process.
There are two events responsible for phone dialing. The first is a custom event that simply dials the phone with the default preferences. This means you need to manually set the preferences from Acid Jazz prior to sending your event. Your preferences will be saved so this only needs to be done the first time you use the application (or when switching from one dialing method to another).
1. Launch Acid Jazz
2. Choose “Preferences” from the File menu.
3. Set the options according to your needs.
The default preferences will work for most modems. The default method is to dial through the speaker. Choose either the modem or printer port if you wish to dial through your modem. Many of the port options such as Baud Rate, Stop Bits, etc... should not need to be changed for most modems. These options set the configuration of the Macintosh serial chip and have no effect on the speed of the modem itself. Baud Rate, for example, simply dictates the speed at which the computer communicates with the modem. They are configurable to provide as much flexibility as possible when working with high speed or non-standard modems.
Turn on Balloon Help to obtain more information about the different options in this dialog box.
The default Configuration String “ATQ0V1S0=0S7=5” should work with most Hayes compatible modems.
• AT - (short for Attention) tells the modem to expect some commands to follow.
• Q0 - (Result codes displayed) is essential for Acid Jazz to operate properly. While it’s the default setting for most modems, it’s included here in case this setting was changed by another communication program.
• V1 - (Verbal result codes) are essential for Acid Jazz to operate properly. This should be the default setting for most modems but we set it here to ensure that we can communicate properly with the modem.
• S0=0 - (Auto answer register) set to 0 to disable the Auto Answer feature of the modem.
• S7=5 - (Wait for carrier register) sets the number of seconds the modem waits for a carrier signal. 5 seconds is generally enough to pick up the phone before the modem hangs up. If you want the modem to wait for a longer period, set this register to a higher value. NOTE: When trying to connect to another modem after using Acid Jazz, you may notice that your modem hangs up before connecting. If your communications software does not reset the S7 register, it will still be set to 5 seconds (not enough time, generally, to get a carrier signal). Place a command like S7=60 in the initialization string of your communications software to correct the problem or turn your modem off and back on to reset it.
Optional Commands:
• &D or &D0 - with some high speed modems, you may need to add this command to your string. It enables the DTR override on these modems.
• X3 or X4 - (Result code sets) will increase the vocabulary of your modem. They will, for example, tell you if the line is busy or there is no dial tone.
Check your modem manual for more information on the commands your modem will except.
You can test your preferences by using the “Dial” command (Command-D) from the File menu. Enter a phone number and click the OK button to test your modem.
The simplest event to use is the “DIAL” event. This event simply dials the phone using the preferences previously defined in the Acid Jazz application. This event also automatically quits Acid Jazz after it has dialed the specified number.
The Class of this event is ‘ACJZ’ and the ID is ‘DIAL’. The direct parameter should be of type ‘TEXT’.
3. Click the “Specify Application” button and select the Acid Jazz application (you may want to place it in your FileMaker Pro folder so you can easily locate it).
4. Choose "Other" from the Event menu and enter ‘ACJZ’ for the Class and ‘DIAL’ for the ID. Case is important when specifying these codes so make sure you type them in all capital letters as listed above.
5. Check the "Bring target application to foreground" option.
6. Select the field contents item and choose your phone number field.
NOTE: If the target application listed at the top of this dialog displays as <unknown> even though you've already selected Acid Jazz, try rebuilding your desktop. Hold down your Option and Command keys together as you start or restart your computer. Keep them held down until you get a dialog asking if you want to rebuild the desktop. Click OK.
The following example defines a QuicKey to automatically dial the contents of the clipboard. This is useful if you want to dial from an application that cannot send AppleEvents. Simply copy the phone number to the Clipboard and execute this QuicKey. You could also use QKIcons (included with QuicKeys) to create a double-clickable finder icon that would activate this macro. For more information on using QuicKeys, consult the manual included with the product.
1. Define an new Sequence specifying a name and a keystroke.
2. Within the sequence, define a File command and choose the Acid Jazz application. This will launch the application.
3. Within the sequence, define an AppleEvent Extension.
4. Choose Acid Jazz as the application (If it is not running use the Other menu item to select it).
5. Use the “Lookup from target” menu item and select the DialPhone event from the Acid Jazz Suite (this will automatically set the correct Class ( ‘ACJZ’ ) and ID ( ‘DIAL’ ).
6. Edit the direct parameter and select the “Get from Clipboard” radio button.
HyperCard cannot send custom events and therefore cannot use this format. Follow the directions in the next section to dial from HyperCard 2.1 or greater.
Acid Jazz has its own scripting language that allows you to send it a script that can not only dial the phone but also configure the Acid Jazz application. To do this, you need to send the standard “Do Script” event. This event does not automatically quit Acid Jazz after completing but there is a script command to perform this function.
The Class of this event is ‘misc’ and the ID is ‘dosc’. The direct parameter should be of type ‘TEXT’.
The syntax of the Acid Jazz scripting language is quite simple. Each line can contain only one command followed by at least one space and a parameter. Multiple commands can be sent if separated by a carriage return. Case is not important. Acid Jazz will except upper or lower case or any combination of the two.
In FileMaker, for example, you can create a calculation field that concatenates your different commands together into a single script. This field would then be sent as the direct parameter of the event. Examine the included FileMaker Pro database for an example of such a calculation.
In HyperCard, you use the “Send” command to send “Do Script” events to other applications. Examine the included HyperCard example for an illustration of how to control Acid Jazz from HyperCard. Consult the “HyperCard 2.1 New Features Guide” included in the HyperCard Development Kit for information on the “Send” command.
The parameter of this command must be one of the valid rates supported by the serial port. Valid rates are: 300, 600, 1200, 1800, 2400, 3600, 4800, 7200, 9600, 19200, 57600.
Example: baud 2400
• To set the Parity of the Macintosh Serial Port*:
parity <parity type>
The parameter of this command must be one of the valid types supported by the serial port. Valid types are: none, odd, even.
Example: parity none
• To set the number of data bits used by the Macintosh Serial Port*:
databits <number of databits>
The parameter of this command must be one of the valid values supported by the serial port. Valid values are: 5, 6, 7, 8.
Example: databits 5
• To set the Stop Bits used by the Macintosh Serial Port*:
stopbits <number of stop bits>
The parameter of this command must be one of the valid values supported by the serial port. Valid values are: 1, 1.5, 2.
Example: stopbits 1
• To set the Handshaking method used by the Macintosh Serial Port*:
handshake <method>
The parameter of this command must be one of the valid methods supported by the serial port. Valid methods are: none, xonxoff, dtrcts, dtronly, ctsonly.
Example: handshake none
• To set the dialing type used by your modem*:
type <dialing type>
The parameter of this command must be either “tone” or “pulse”.
Example: type tone
• To set the duration of delay when encountering a comma in a phone number**:
delay <seconds>
The parameter of this command must be a value between 1 and 5.
Example: delay 2
• To set the port Acid Jazz will use when dialing:
port <port>
The parameter of this command must be either "modem", "printer" or "speaker".
Example: port speaker
• To set the configuration string sent to your modem prior to dialing*:
config <configuration string>
The parameter of this command should be a valid configuration string understood by your modem. Consult your modem’s user guide for details on configuring your modem.
Example: config ATS0=0S7=5
• To set a prefix to be automatically appended to the beginning of your phone number:
out <prefix>
The parameter of this command should be a value you want to automatically add to the beginning of each phone number. Codes for obtaining an outside line line or a long distance carrier code are examples of this.
Example: out 9,
• To set the local area code:
local <local area code>
The parameter of this command should be the local area code. This command will cause the area code to be automatically stripped off when dialing local numbers.
Example: local 408
• To set the long distance prefix:
long <long distance prefix>
The parameter of this command should be the prefix (if any) you need to dial prior to a long distance number. The parameter of this command will automatically be added to the beginning of all numbers dialed where the area code does not match that of the local area code (set using the local command).
Example: long 1
• To set the long distance postfix:
post <long distance code>
The parameter of this command should be the code (if any) you need to dial after a long distance number. The parameter of this command will automatically be added to the end of all numbers dialed where the area code does not match that of the local area code (set using the local command).
Example: post 12345
• To set the dialing speed when dialing through the Macintosh speaker**:
speed <dialing speed>
The parameter of this command must be a value between 1 and 5. 1 = Fastest, 5 = Slowest.
Example: speed 3
• To dial the phone:
dial <phone number>
The parameter of this command should be any valid phone number.
You can place special modem commands and characters into your phone numbers to control the modem. A comma, for example, will cause the modem to pause for a specified period of time. This interval is determined by the settings of the modem and can be changed by your configuration string (consult your modem manual for details).
Most text will be ignored by your modem unless it is enclosed in quotes. When most modems encounter text in quotes, they will try to evaluate the text to the corresponding number on the telephone dial. For example, the number 976-“WAKE” would be converted by your modem to 976-9253. If the local area code is included inside quotes, however, it will not be automatically stripped from the phone number. Consult your modem manual to see if this feature is available.
Acid Jazz also performs both of these functions when dialing through the speaker.
Acid Jazz supports AppleScript. It is fully scriptable and recordable. To record a script, open a new or existing script in the AppleScript Script Editor and click the Record button. In Acid Jazz, set your Preferences, dial a phone number, etc... All your actions will be recorded by AppleScript and added to the current script. Examine the included AppleScript example for an illustration of how to control Acid Jazz from AppleScript.